package com.dkd.common.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class HashUtil {

    /**
     * 生成 SHA-256 哈希值
     * @param input 输入的字符串数据
     * @return 生成的 SHA-256 哈希值（16进制表示）
     */
    public static String generateSHA256Hash(String input) {
        try {
            // 创建 SHA-256 的 MessageDigest 实例
            MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");

            // 计算输入字符串的哈希值
            byte[] hashBytes = messageDigest.digest(input.getBytes());

            // 转换为 16 进制表示的字符串
            StringBuilder hexString = new StringBuilder();
            for (byte b : hashBytes) {
                hexString.append(String.format("%02x", b));
            }

            return hexString.toString();  // 返回 SHA-256 哈希值
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;  // 出现异常时返回 null
        }
    }

    public static void main(String[] args) {
        // 假设这是你要生成哈希值的数据
        String specification = "spec1";
        String model = "modelA";
        String material = "metal";
        String power = "100W";
        String brand = "BrandX";
        String manufacturer = "ManufacturerY";

        // 将多个字段值合并为一个字符串
        String combinedString = specification + "_" + model + "_" + material + "_" + power + "_" + brand + "_" + manufacturer;

        // 调用方法生成 SHA-256 哈希值
        String sha256Hash = generateSHA256Hash(combinedString);

        System.out.println("SHA-256 Hash: " + sha256Hash);
    }
}

